0108. 类型工具
- 1. 🎯 本节内容
- 2. 🫧 评价
- 3. 🔍 章节速览
- 4. 🤔 TS 内置的工具类型本质上是类型别名(Type Alias)还是接口(interface)?
- 5. 🤔 TS 内置的类型工具(Utility Types)都有哪些?
1. 🎯 本节内容
- 类型工具
2. 🫧 评价
类型工具是实际开发中常用的一种工具,用于对类型进行转换、过滤、映射等操作,TS 提供了一些内置的工具类型,如 Partial、Required、Pick、Omit、Record 等,也支持根据需求自定义工具类型。
3. 🔍 章节速览
| 笔记 | 简介 |
|---|---|
| 0205.Partial | Partial<T> 是 TS 中最常用的工具类型之一,它将类型的所有属性变为可选,在表单、配置、API 更新等场景中广泛使用。 |
| 0206.Required | Required<T> 是 Partial<T> 的反向操作,用于将类型的所有可选属性变为必需。 |
| 0207.Readonly | Readonly<T> 用于将类型 T 的所有属性变为只读属性,如果只是想要实现部分属性只读的效果,直接使用 readonly 修饰符即可。 |
| 0208.Record | Record<K, T> 创建一个对象类型,其属性键为 K,属性值为 T,其中 K 的类型必须兼容 string | number | symbol。 |
| 0209.Pick | Pick<T, K> 从类型 T 中选取指定的属性 K,创建新类型,常用来提取某个类型的子集。 |
| 0210.Omit | 暂无简介 |
| 0211.Exclude | 暂无简介 |
| 0212.Extract | 暂无简介 |
| 0213.NonNullable | 暂无简介 |
| 0214.ReturnType | 暂无简介 |
| 0215.Parameters | 暂无简介 |
| 0216.ConstructorParameters | 暂无简介 |
| 0217.InstanceType | 暂无简介 |
| 0218.ThisParameterType | 暂无简介 |
| 0219.OmitThisParameter | 暂无简介 |
| 0220.Awaited | 暂无简介 |
| 0221.自定义工具类型 | 暂无简介 |
4. 🤔 TS 内置的工具类型本质上是类型别名(Type Alias)还是接口(interface)?
TS 内置的工具类型(如 Record、Partial、Pick 等)本质上是类型别名(Type Alias),而不是接口。
它们使用 type 关键字定义,结合了泛型、映射类型、条件类型等高级类型特性来实现类型转换,对于复杂的类型转换,type 更加灵活。
| 对比项 | 说明 |
|---|---|
| 映射类型 | interface 不支持映射类型语法([K in keyof T]) |
| 条件类型 | interface 不支持条件类型(T extends U ? X : Y) |
| 联合类型 | interface 无法表示联合类型 |
| 类型运算 | type 可以进行复杂的类型运算和组合 |
5. 🤔 TS 内置的类型工具(Utility Types)都有哪些?
目前 25.12 TS 的最新版是:v5.9,有以下内置的工具类型:
Awaited<Type>Partial<Type>Required<Type>Readonly<Type>Record<Keys, Type>Pick<Type, Keys>Omit<Type, Keys>Exclude<UnionType, ExcludedMembers>Extract<Type, Union>NonNullable<Type>Parameters<Type>ConstructorParameters<Type>ReturnType<Type>InstanceType<Type>NoInfer<Type>ThisParameterType<Type>OmitThisParameter<Type>ThisType<Type>- Intrinsic String Manipulation Types 内置字符串操作类型
Uppercase<StringType>Lowercase<StringType>Capitalize<StringType>Uncapitalize<StringType>